<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="baidu-site-verification" content="L6Lm9d5Crl"/>
  
  
  
  
  <title>JSP入门 | 烟花小神</title>
  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
  <meta name="description" content="date: 2018/5/10 0:50:21     学了JSP两课时,以及那些年自己踩过的坑!!!">
<meta property="og:type" content="article">
<meta property="og:title" content="JSP入门">
<meta property="og:url" content="http://www.lan666.top/2018/05/10/JSP入门/index.html">
<meta property="og:site_name" content="烟花小神">
<meta property="og:description" content="date: 2018/5/10 0:50:21     学了JSP两课时,以及那些年自己踩过的坑!!!">
<meta property="og:locale" content="zh-Hans">
<meta property="og:image" content="https://i.imgur.com/1QYplbu.png">
<meta property="og:image" content="https://i.imgur.com/RcpksY5.png">
<meta property="og:image" content="https://i.imgur.com/ji9UWOH.png">
<meta property="og:image" content="https://i.imgur.com/Gh82qJt.png">
<meta property="og:image" content="https://i.imgur.com/RtTb8sp.png">
<meta property="og:image" content="https://i.imgur.com/9aCDzsB.png">
<meta property="og:image" content="https://i.imgur.com/yIG0azR.png">
<meta property="og:image" content="https://i.imgur.com/xYlc0BT.png">
<meta property="og:image" content="https://i.imgur.com/E7Wy6o6.png">
<meta property="og:image" content="https://i.imgur.com/fRKZgdO.png">
<meta property="og:updated_time" content="2018-05-09T16:50:22.508Z">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="JSP入门">
<meta name="twitter:description" content="date: 2018/5/10 0:50:21     学了JSP两课时,以及那些年自己踩过的坑!!!">
<meta name="twitter:image" content="https://i.imgur.com/1QYplbu.png">
  
    <link rel="alternative" href="/atom.xml" title="烟花小神" type="application/atom+xml">
  
  
    <link rel="icon" href="/img/avatar.png">
  
  
  <link rel="stylesheet" href="//cdn.bootcss.com/animate.css/3.5.0/animate.min.css">
  
  <link rel="stylesheet" href="/css/style.css">
  <link rel="stylesheet" href="/font-awesome/css/font-awesome.min.css">
  <link rel="apple-touch-icon" href="/apple-touch-icon.png">
  
  
      <link rel="stylesheet" href="/fancybox/jquery.fancybox.css">
  
  <!-- 加载特效 -->
    <script src="/js/pace.js"></script>
    <link href="/css/pace/pace-theme-flash.css" rel="stylesheet" />
  <script>
      var yiliaConfig = {
          fancybox: true,
          animate: true,
          isHome: false,
          isPost: true,
          isArchive: false,
          isTag: false,
          isCategory: false,
          open_in_new: false
      }
  </script>
</head>
<body>
  <div id="container">
    <div class="left-col">
    <div class="overlay"></div>
<div class="intrude-less">
    <header id="header" class="inner">
        
<script src="https://7.url.cn/edu/jslib/comb/require-2.1.6,jquery-1.9.1.min.js"></script>

        <a href="/" class="profilepic">
            
            <img lazy-src="/img/avatar.png" class="js-avatar">
            
        </a>
        <hgroup>
          <h1 class="header-author"><a href="/">烟花小神博客</a></h1>
        </hgroup>
        
        
        
        
        <div id="switch-area" class="switch-area">
            <div class="switch-wrap">
                <section class="switch-part switch-part1">
                    <nav class="header-menu">
                        <ul>
                        
                            <li><a  href="http://lan666.top">主页</a></li>
                        
                            <li><a  href="/archives/">文章</a></li>
                        
                            <li><a  href="http://wpa.qq.com/msgrd?v=3&uin=1347229508&site=qq&menu=yes">QQ</a></li>
                        
                            <li><a  href="mailto:1347229508@qq.com">邮箱</a></li>
                        
                            <li><a  href="http://weibo.com/1721934155">微博</a></li>
                        
                        </ul>
                    </nav>
                    <nav class="header-nav">
                        <ul class="social">
                            
                        </ul>
                    </nav>
                </section>
                
                
                
            </div>
        </div>
    </header>
</div>

    </div>
    <div class="mid-col">
      <nav id="mobile-nav">
      <div class="overlay">
          <div class="slider-trigger"></div>
          <h1 class="header-author js-mobile-header hide"><a href="/" title="回到主页">烟花小神博客</a></h1>
      </div>
    <div class="intrude-less">
        <header id="header" class="inner">
            <a href="/" class="profilepic">
                
                    <img lazy-src="/img/avatar.png" class="js-avatar">
                
            </a>
            <hgroup>
              <h1 class="header-author"><a href="/" title="回到主页">烟花小神博客</a></h1>
            </hgroup>
            
            <nav class="header-menu">
                <ul>
                
                    <li><a href="http://lan666.top">主页</a></li>
                
                    <li><a href="/archives/">文章</a></li>
                
                    <li><a href="http://wpa.qq.com/msgrd?v=3&uin=1347229508&site=qq&menu=yes">QQ</a></li>
                
                    <li><a href="mailto:1347229508@qq.com">邮箱</a></li>
                
                    <li><a href="http://weibo.com/1721934155">微博</a></li>
                
                <div class="clearfix"></div>
                </ul>
            </nav>
            <nav class="header-nav">
                <div class="social">
                    
                </div>
            </nav>
        </header>
    </div>
</nav>
      <div class="body-wrap"><article id="post-JSP入门" class="article article-type-post" itemscope itemprop="blogPost">
  
    <div class="article-meta">
      <a  href="/2018/05/10/JSP入门/" class="article-date">
      <time datetime="2018-05-09T16:29:50.943Z" itemprop="datePublished">2018-05-10</time>
</a>

    </div>
  
  <div class="article-inner">
    
      <input type="hidden" class="isFancy" />
    
    
      <header class="article-header">
        
  
    <h1 class="article-title" itemprop="name">
      JSP入门
    </h1>
  


      </header>
      
      <div class="article-info article-info-post">
        

        
        <div class="clearfix"></div>
      </div>
      
    
    <div class="article-entry" itemprop="articleBody">
      
          
        <h2 id="date-2018-5-10-0-50-21"><a href="#date-2018-5-10-0-50-21" class="headerlink" title="date: 2018/5/10 0:50:21     "></a>date: 2018/5/10 0:50:21     </h2><p><excerpt in="" index="" |="" 首页摘要=""><br>学了JSP两课时,以及那些年自己踩过的坑!!! <a id="more"></a></excerpt></p>
<p><the rest="" of="" contents="" |="" 余下全文=""><br><!--代码高亮--></the></p>
<hr>
<h2 id="首页说下网页错误状态码"><a href="#首页说下网页错误状态码" class="headerlink" title="首页说下网页错误状态码"></a>首页说下网页错误状态码</h2><blockquote>
<p>以下是部分常用的错误代码  后面会列举全部的错误状态码（详解）</p>
</blockquote>
<pre><code>200：正确的请求返回正确的结果，如果不想细分正确的请求结果都可以直接返回200。
201：表示资源被正确的创建。比如说，我们 POST 用户名、密码正确创建了一个用户就可以返回 201。
202：请求是正确的，但是结果正在处理中，这时候客户端可以通过轮询等机制继续请求。
203：请求的代理服务器修改了源服务器返回的 200 中的内容，我们通过代理服务器向服务器 A 请求用户信息，服务器 A 正常响应，但代理服务器命中了缓存并返回了自己的缓存内容，这时候它返回 203 告诉我们这部分信息不一定是最新的，我们可以自行判断并处理。
300：请求成功，但结果有多种选择。
301：请求成功，但是资源被永久转移。比如说，我们下载的东西不在这个地址需要去到新的地址。
303：使用 GET 来访问新的地址来获取资源。
304：请求的资源并没有被修改过。
308：使用原有的地址请求方式来通过新地址获取资源。
400：请求出现错误，比如请求头不对等。
401：没有提供认证信息。请求的时候没有带上 Token 等。
402：为以后需要所保留的状态码。
403：请求的资源不允许访问。就是说没有权限。
404：请求的内容不存在。
406：请求的资源并不符合要求。
408：客户端请求超时。
413：请求体过大。
415：类型不正确。
416：请求的区间无效。
500：服务器错误。
501：请求还没有被实现。
502：网关错误。
503：服务暂时不可用。服务器正好在更新代码重启。
505：请求的 HTTP 版本不支持。
</code></pre><hr>
<h2 id="Servlet的生命周期"><a href="#Servlet的生命周期" class="headerlink" title="Servlet的生命周期"></a>Servlet的生命周期</h2><pre><code>1.  加载并实例化   （在服务器启动或被调用第一次时）
2.  初始化  init（方法）
3.  服务   （判断用户访问时）
4.  销毁   （手动调用销毁或服务器停止时）
</code></pre><p>图文</p>
<p><img src="https://i.imgur.com/1QYplbu.png" alt=""></p>
<hr>
<h2 id="一张图走进Servlet"><a href="#一张图走进Servlet" class="headerlink" title="一张图走进Servlet"></a>一张图走进Servlet</h2><p><img src="https://i.imgur.com/RcpksY5.png" alt=""><br><img src="https://i.imgur.com/ji9UWOH.png" alt=""></p>
<hr>
<h2 id="空指针问题"><a href="#空指针问题" class="headerlink" title="空指针问题"></a>空指针问题</h2><blockquote>
<p><strong>java NullPointerException</strong></p>
<p>像我这样的小白 经常会出现空指针,最近看道空指针真的很头痛啊!</p>
</blockquote>
<pre><code>列举部分空指针

1、变量没有初始化

2、接口对象没有用具体类初始化

 例如：List list；就会报错。但是List list=new List();就不会报错

3、字符串为空

在使用之前进行判空处理 

4、对象的值为空

 进行判空处理
</code></pre><hr>
<h2 id="Tomcat-端口被占用解决方案"><a href="#Tomcat-端口被占用解决方案" class="headerlink" title="Tomcat 端口被占用解决方案"></a>Tomcat 端口被占用解决方案</h2><pre><code>首先按快捷键windows+R，
在运行框里输入cmd，
进入黑色界面后，输入netstat -ano 8080，查看PID。
taskkill-pid 输入进程PID -f 
回车干掉
</code></pre><hr>
<h2 id="404地址错误的踩坑（初学者）"><a href="#404地址错误的踩坑（初学者）" class="headerlink" title="404地址错误的踩坑（初学者）"></a>404地址错误的踩坑（初学者）</h2><pre><code>确保图中地址对应 已经浏览器的地址大小写等。。。。。
</code></pre><p><img src="https://i.imgur.com/Gh82qJt.png" alt=""><br><img src="https://i.imgur.com/RtTb8sp.png" alt=""></p>
<hr>
<h2 id="request-response-部分基本用法"><a href="#request-response-部分基本用法" class="headerlink" title="request response 部分基本用法"></a>request response 部分基本用法</h2><blockquote>
<p>request<br><img src="https://i.imgur.com/9aCDzsB.png" alt=""><br><img src="https://i.imgur.com/yIG0azR.png" alt=""><br><img src="https://i.imgur.com/xYlc0BT.png" alt=""><br><img src="https://i.imgur.com/E7Wy6o6.png" alt=""></p>
<p>response<br><img src="https://i.imgur.com/fRKZgdO.png" alt=""></p>
</blockquote>
<figure class="highlight java"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div></pre></td><td class="code"><pre><div class="line"></div><div class="line">转发地址</div><div class="line">request.getRequestDispatcher（<span class="string">"index.jsp"</span>）.forward（request,request）；</div><div class="line">跳转地址</div><div class="line">response.sendRedirect(<span class="string">"index.jsp"</span>);</div><div class="line">设置Session</div><div class="line">request.getSession().setAttribute(<span class="string">"text1"</span>, <span class="string">"登录成功"</span>);</div><div class="line">得到Session</div><div class="line">request.getSession().getAttribute(<span class="string">"text1"</span>);</div><div class="line">EL表达式拿到Session</div><div class="line">$&#123;sessionScope.text1 &#125;</div><div class="line">清空Session</div><div class="line">&lt;%session.invalidate();%&gt;</div></pre></td></tr></table></figure>
<hr>
<h2 id="数据库DB-Util-工具类"><a href="#数据库DB-Util-工具类" class="headerlink" title="数据库DB_Util 工具类"></a>数据库DB_Util 工具类</h2><blockquote>
<p>通过DB_Util工具类可以方便的更换</p>
<p>数据库名 连接地址 以及更换sqlserver mysql的连接地址 数据库密码 </p>
<p>jdbcInfo.Properties配置文件放在 src工具类下</p>
</blockquote>
<hr>
<figure class="highlight java"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div></pre></td><td class="code"><pre><div class="line"></div><div class="line"><span class="keyword">try</span> &#123;</div><div class="line">		Properties props = <span class="keyword">new</span> Properties();</div><div class="line">		InputStream fis = Db.class.getResourceAsStream(<span class="string">"jdbcInfo.Properties"</span>);</div><div class="line">		props.load(fis);</div><div class="line">		diver = props.getProperty(<span class="string">"jdbc.driver"</span>);</div><div class="line">		</div><div class="line">		url =props.getProperty(<span class="string">"jdbc.url"</span>);</div><div class="line">		user = props.getProperty(<span class="string">"jdbc.user"</span>);</div><div class="line">		pwd =props.getProperty(<span class="string">"jdbc.pwd"</span>);</div><div class="line">	&#125; <span class="keyword">catch</span> (Exception e) &#123;</div><div class="line">		<span class="comment">// <span class="doctag">TODO:</span> handle exception</span></div><div class="line">	&#125;</div></pre></td></tr></table></figure>
<hr>
<h2 id="以下来自度娘"><a href="#以下来自度娘" class="headerlink" title="以下来自度娘"></a>以下来自度娘</h2><blockquote>
<p>100    客户端应当继续发送请求。这个临时响应是用来通知客户端它的部分请求已经被服务器接收，且仍未被拒绝。客户端应当继续发送请求的剩余部分，或者如果请求已经完成，忽略这个响应。服务器必须在请求完成后向客户端发送一个最终响应。</p>
<p>101    服务器已经理解了客户端的请求，并将通过Upgrade 消息头通知客户端采用不同的协议来完成这个请求。在发送完这个响应最后的空行后，服务器将会切换到在Upgrade 消息头中定义的那些协议。 　　只有在切换新的协议更有好处的时候才应该采取类似措施。例如，切换到新的HTTP 版本比旧版本更有优势，或者切换到一个实时且同步的协议以传送利用此类特性的资源。</p>
<p>102    由WebDAV（RFC 2518）扩展的状态码，代表处理将被继续执行。</p>
<p>200    请求已成功，请求所希望的响应头或数据体将随此响应返回。</p>
<p>201    请求已经被实现，而且有一个新的资源已经依据请求的需要而建立，且其 URI 已经随Location 头信息返回。假如需要的资源无法及时建立的话，应当返回 ‘202 Accepted’。</p>
<p>202    服务器已接受请求，但尚未处理。正如它可能被拒绝一样，最终该请求可能会也可能不会被执行。在异步操作的场合下，没有比发送这个状态码更方便的做法了。 　　返回202状态码的响应的目的是允许服务器接受其他过程的请求（例如某个每天只执行一次的基于批处理的操作），而不必让客户端一直保持与服务器的连接直到批处理操作全部完成。在接受请求处理并返回202状态码的响应应当在返回的实体中包含一些指示处理当前状态的信息，以及指向处理状态监视器或状态预测的指针，以便用户能够估计操作是否已经完成。</p>
<p>203    服务器已成功处理了请求，但返回的实体头部元信息不是在原始服务器上有效的确定集合，而是来自本地或者第三方的拷贝。当前的信息可能是原始版本的子集或者超集。例如，包含资源的元数据可能导致原始服务器知道元信息的超级。使用此状态码不是必须的，而且只有在响应不使用此状态码便会返回200 OK的情况下才是合适的。</p>
<p>204    服务器成功处理了请求，但不需要返回任何实体内容，并且希望返回更新了的元信息。响应可能通过实体头部的形式，返回新的或更新后的元信息。如果存在这些头部信息，则应当与所请求的变量相呼应。 　　如果客户端是浏览器的话，那么用户浏览器应保留发送了该请求的页面，而不产生任何文档视图上的变化，即使按照规范新的或更新后的元信息应当被应用到用户浏览器活动视图中的文档。 　　由于204响应被禁止包含任何消息体，因此它始终以消息头后的第一个空行结尾。</p>
<p>205    服务器成功处理了请求，且没有返回任何内容。但是与204响应不同，返回此状态码的响应要求请求者重置文档视图。该响应主要是被用于接受用户输入后，立即重置表单，以便用户能够轻松地开始另一次输入。 　　与204响应一样，该响应也被禁止包含任何消息体，且以消息头后的第一个空行结束。</p>
<p>206    服务器已经成功处理了部分 GET 请求。类似于 FlashGet 或者迅雷这类的 HTTP 下载工具都是使用此类响应实现断点续传或者将一个大文档分解为多个下载段同时下载。 　　该请求必须包含 Range 头信息来指示客户端希望得到的内容范围，并且可能包含 If-Range 来作为请求条件。 　　响应必须包含如下的头部域： 　　Content-Range 用以指示本次响应中返回的内容的范围；如果是 Content-Type 为 multipart/byteranges 的多段下载，则每一 multipart 段中都应包含 Content-Range 域用以指示本段的内容范围。假如响应中包含 Content-Length，那么它的数值必须匹配它返回的内容范围的真实字节数。 　　Date 　　ETag 和/或 Content-Location，假如同样的请求本应该返回200响应。 　　Expires, Cache-Control，和/或 Vary，假如其值可能与之前相同变量的其他响应对应的值不同的话。 　　假如本响应请求使用了 If-Range 强缓存验证，那么本次响应不应该包含其他实体头；假如本响应的请求使用了 If-Range 弱缓存验证，那么本次响应禁止包含其他实体头；这避免了缓存的实体内容和更新了的实体头信息之间的不一致。否则，本响应就应当包含所有本应该返回200响应中应当返回的所有实体头部域。 　　假如 ETag 或 Last-Modified 头部不能精确匹配的话，则客户端缓存应禁止将206响应返回的内容与之前任何缓存过的内容组合在一起。 　　任何不支持 Range 以及 Content-Range 头的缓存都禁止缓存206响应返回的内容。</p>
<p>207    由WebDAV(RFC 2518)扩展的状态码，代表之后的消息体将是一个XML消息，并且可能依照之前子请求数量的不同，包含一系列独立的响应代码。</p>
<p>300    被请求的资源有一系列可供选择的回馈信息，每个都有自己特定的地址和浏览器驱动的商议信息。用户或浏览器能够自行选择一个首选的地址进行重定向。 　　除非这是一个 HEAD 请求，否则该响应应当包括一个资源特性及地址的列表的实体，以便用户或浏览器从中选择最合适的重定向地址。这个实体的格式由 Content-Type 定义的格式所决定。浏览器可能根据响应的格式以及浏览器自身能力，自动作出最合适的选择。当然，RFC 2616规范并没有规定这样的自动选择该如何进行。 　　如果服务器本身已经有了首选的回馈选择，那么在 Location 中应当指明这个回馈的 URI；<br>浏览器可能会将这个 Location 值作为自动重定向的地址。此外，除非额外指定，否则这个响应也是可缓存的。</p>
<p>301    被请求的资源已永久移动到新位置，并且将来任何对此资源的引用都应该使用本响应返回的若干个 URI 之一。如果可能，拥有链接编辑功能的客户端应当自动把请求的地址修改为从服务器反馈回来的地址。除非额外指定，否则这个响应也是可缓存的。 　　新的永久性的 URI 应当在响应的 Location 域中返回。除非这是一个 HEAD 请求，否则响应的实体中应当包含指向新的 URI 的超链接及简短说明。 　　如果这不是一个 GET 或者 HEAD 请求，因此浏览器禁止自动进行重定向，除非得到用户的确认，因为请求的条件可能因此发生变化。 　　注意：对于某些使用 HTTP/1.0 协议的浏览器，当它们发送的 POST 请求得到了一个301响应的话，接下来的重定向请求将会变成 GET 方式。</p>
<p>302    请求的资源现在临时从不同的 URI 响应请求。由于这样的重定向是临时的，客户端应当继续向原有地址发送以后的请求。只有在Cache-Control或Expires中进行了指定的情况下，这个响应才是可缓存的。 　　新的临时性的 URI 应当在响应的 Location 域中返回。除非这是一个 HEAD 请求，否则响应的实体中应当包含指向新的 URI 的超链接及简短说明。 　　如果这不是一个 GET 或者 HEAD 请求，那么浏览器禁止自动进行重定向，除非得到用户的确认，因为请求的条件可能因此发生变化。 　　注意：虽然RFC 1945和RFC 2068规范不允许客户端在重定向时改变请求的方法，但是很多现存的浏览器将302响应视作为303响应，并且使用 GET 方式访问在 Location 中规定的 URI，而无视原先请求的方法。状态码303和307被添加了进来，用以明确服务器期待客户端进行何种反应。</p>
<p>303    对应当前请求的响应可以在另一个 URI 上被找到，而且客户端应当采用 GET 的方式访问那个资源。这个方法的存在主要是为了允许由脚本激活的POST请求输出重定向到一个新的资源。这个新的 URI 不是原始资源的替代引用。同时，303响应禁止被缓存。当然，第二个请求（重定向）可能被缓存。 　　新的 URI 应当在响应的 Location 域中返回。除非这是一个 HEAD 请求，否则响应的实体中应当包含指向新的 URI 的超链接及简短说明。 　　注意：许多 HTTP/1.1 版以前的 浏览器不能正确理解303状态。如果需要考虑与这些浏览器之间的互动，302状态码应该可以胜任，因为大多数的浏览器处理302响应时的方式恰恰就是上述规范要求客户端处理303响应时应当做的。</p>
<p>304    如果客户端发送了一个带条件的 GET 请求且该请求已被允许，而文档的内容（自上次访问以来或者根据请求的条件）并没有改变，则服务器应当返回这个状态码。304响应禁止包含消息体，因此始终以消息头后的第一个空行结尾。 　　该响应必须包含以下的头信息： 　　Date，除非这个服务器没有时钟。假如没有时钟的服务器也遵守这些规则，那么代理服务器以及客户端可以自行将 Date 字段添加到接收到的响应头中去（正如RFC 2068中规定的一样），缓存机制将会正常工作。 　　ETag 和/或 Content-Location，假如同样的请求本应返回200响应。 　　Expires, Cache-Control，和/或Vary，假如其值可能与之前相同变量的其他响应对应的值不同的话。 　　假如本响应请求使用了强缓存验证，那么本次响应不应该包含其他实体头；否则（例如，某个带条件的 GET 请求使用了弱缓存验证），本次响应禁止包含其他实体头；这避免了缓存了的实体内容和更新了的实体头信息之间的不一致。 　　假如某个304响应指明了当前某个实体没有缓存，那么缓存系统必须忽视这个响应，并且重复发送不包含限制条件的请求。 　　假如接收到一个要求更新某个缓存条目的304响应，那么缓存系统必须更新整个条目以反映所有在响应中被更新的字段的值。</p>
<p>305    被请求的资源必须通过指定的代理才能被访问。Location 域中将给出指定的代理所在的 URI 信息，接收者需要重复发送一个单独的请求，通过这个代理才能访问相应资源。只有原始服务器才能建立305响应。 　　注意：RFC 2068中没有明确305响应是为了重定向一个单独的请求，而且只能被原始服务器建立。忽视这些限制可能导致严重的安全后果。</p>
<p>306    在最新版的规范中，306状态码已经不再被使用。</p>
<p>307    请求的资源现在临时从不同的URI 响应请求。由于这样的重定向是临时的，客户端应当继续向原有地址发送以后的请求。只有在Cache-Control或Expires中进行了指定的情况下，这个响应才是可缓存的。 　　新的临时性的URI 应当在响应的 Location 域中返回。除非这是一个HEAD 请求，否则响应的实体中应当包含指向新的URI 的超链接及简短说明。因为部分浏览器不能识别307响应，因此需要添加上述必要信息以便用户能够理解并向新的 URI 发出访问请求。 　　如果这不是一个GET 或者 HEAD 请求，那么浏览器禁止自动进行重定向，除非得到用户的确认，因为请求的条件可能因此发生变化。</p>
<p>400    1、语义有误，当前请求无法被服务器理解。除非进行修改，否则客户端不应该重复提交这个请求。 　　2、请求参数有误。</p>
<p>401    当前请求需要用户验证。该响应必须包含一个适用于被请求资源的 WWW-Authenticate 信息头用以询问用户信息。客户端可以重复提交一个包含恰当的 Authorization 头信息的请求。如果当前请求已经包含了 Authorization 证书，那么401响应代表着服务器验证已经拒绝了那些证书。如果401响应包含了与前一个响应相同的身份验证询问，且浏览器已经至少尝试了一次验证，那么浏览器应当向用户展示响应中包含的实体信息，因为这个实体信息中可能包含了相关诊断信息。参见RFC 2617。</p>
<p>402    该状态码是为了将来可能的需求而预留的。</p>
<p>403    服务器已经理解请求，但是拒绝执行它。与401响应不同的是，身份验证并不能提供任何帮助，而且这个请求也不应该被重复提交。如果这不是一个 HEAD 请求，而且服务器希望能够讲清楚为何请求不能被执行，那么就应该在实体内描述拒绝的原因。当然服务器也可以返回一个404响应，假如它不希望让客户端获得任何信息。</p>
<p>404    请求失败，请求所希望得到的资源未被在服务器上发现。没有信息能够告诉用户这个状况到底是暂时的还是永久的。假如服务器知道情况的话，应当使用410状态码来告知旧资源因为某些内部的配置机制问题，已经永久的不可用，而且没有任何可以跳转的地址。404这个状态码被广泛应用于当服务器不想揭示到底为何请求被拒绝或者没有其他适合的响应可用的情况下。</p>
<p>405    请求行中指定的请求方法不能被用于请求相应的资源。该响应必须返回一个Allow 头信息用以表示出当前资源能够接受的请求方法的列表。 　　鉴于 PUT，DELETE 方法会对服务器上的资源进行写操作，因而绝大部分的网页服务器都不支持或者在默认配置下不允许上述请求方法，对于此类请求均会返回405错误。</p>
<p>406    请求的资源的内容特性无法满足请求头中的条件，因而无法生成响应实体。 　　除非这是一个 HEAD 请求，否则该响应就应当返回一个包含可以让用户或者浏览器从中选择最合适的实体特性以及地址列表的实体。实体的格式由 Content-Type 头中定义的媒体类型决定。浏览器可以根据格式及自身能力自行作出最佳选择。但是，规范中并没有定义任何作出此类自动选择的标准。</p>
<p>407    　与401响应类似，只不过客户端必须在代理服务器上进行身份验证。代理服务器必须返回一个 Proxy-Authenticate 用以进行身份询问。客户端可以返回一个 Proxy-Authorization 信息头用以验证。参见RFC 2617。</p>
<p>408    请求超时。客户端没有在服务器预备等待的时间内完成一个请求的发送。客户端可以随时再次提交这一请求而无需进行任何更改。</p>
<p>409    由于和被请求的资源的当前状态之间存在冲突，请求无法完成。这个代码只允许用在这样的情况下才能被使用：用户被认为能够解决冲突，并且会重新提交新的请求。该响应应当包含足够的信息以便用户发现冲突的源头。 　　冲突通常发生于对 PUT 请求的处理中。例如，在采用版本检查的环境下，某次 PUT 提交的对特定资源的修改请求所附带的版本信息与之前的某个（第三方）请求向冲突，那么此时服务器就应该返回一个409错误，告知用户请求无法完成。此时，响应实体中很可能会包含两个冲突版本之间的差异比较，以便用户重新提交归并以后的新版本。</p>
<p>410    被请求的资源在服务器上已经不再可用，而且没有任何已知的转发地址。这样的状况应当被认为是永久性的。如果可能，拥有链接编辑功能的客户端应当在获得用户许可后删除所有指向这个地址的引用。如果服务器不知道或者无法确定这个状况是否是永久的，那么就应该使用404状态码。除非额外说明，否则这个响应是可缓存的。 　　410响应的目的主要是帮助网站管理员维护网站，通知用户该资源已经不再可用，并且服务器拥有者希望所有指向这个资源的远端连接也被删除。这类事件在限时、增值服务中很普遍。同样，410响应也被用于通知客户端在当前服务器站点上，原本属于某个个人的资源已经不再可用。当然，是否需要把所有永久不可用的资源标记为’410 Gone’，以及是否需要保持此标记多长时间，完全取决于服务器拥有者。</p>
<p>411    服务器拒绝在没有定义 Content-Length 头的情况下接受请求。在添加了表明请求消息体长度的有效 Content-Length 头之后，客户端可以再次提交该请求。</p>
<p>412    服务器在验证在请求的头字段中给出先决条件时，没能满足其中的一个或多个。这个状态码允许客户端在获取资源时在请求的元信息（请求头字段数据）中设置先决条件，以此避免该请求方法被应用到其希望的内容以外的资源上。</p>
<p>413    服务器拒绝处理当前请求，因为该请求提交的实体数据大小超过了服务器愿意或者能够处理的范围。此种情况下，服务器可以关闭连接以免客户端继续发送此请求。 　　如果这个状况是临时的，服务器应当返回一个 Retry-After 的响应头，以告知客户端可以在多少时间以后重新尝试。</p>
<p>414    请求的URI 长度超过了服务器能够解释的长度，因此服务器拒绝对该请求提供服务。这比较少见，通常的情况包括： 　　本应使用POST方法的表单提交变成了GET方法，导致查询字符串（Query String）过长。 　　重定向URI “黑洞”，例如每次重定向把旧的 URI 作为新的 URI 的一部分，导致在若干次重定向后 URI 超长。 　　客户端正在尝试利用某些服务器中存在的安全漏洞攻击服务器。这类服务器使用固定长度的缓冲读取或操作请求的 URI，当 GET 后的参数超过某个数值后，可能会产生缓冲区溢出，导致任意代码被执行[1]。没有此类漏洞的服务器，应当返回414状态码。</p>
<p>415    对于当前请求的方法和所请求的资源，请求中提交的实体并不是服务器中所支持的格式，因此请求被拒绝。</p>
<p>416    如果请求中包含了 Range 请求头，并且 Range 中指定的任何数据范围都与当前资源的可用范围不重合，同时请求中又没有定义 If-Range 请求头，那么服务器就应当返回416状态码。 　　假如 Range 使用的是字节范围，那么这种情况就是指请求指定的所有数据范围的首字节位置都超过了当前资源的长度。服务器也应当在返回416状态码的同时，包含一个 Content-Range 实体头，用以指明当前资源的长度。这个响应也被禁止使用 multipart/byteranges 作为其 Content-Type。</p>
<p>417    在请求头 Expect 中指定的预期内容无法被服务器满足，或者这个服务器是一个代理服务器，它有明显的证据证明在当前路由的下一个节点上，Expect 的内容无法被满足。</p>
<p>421    从当前客户端所在的IP地址到服务器的连接数超过了服务器许可的最大范围。通常，这里的IP地址指的是从服务器上看到的客户端地址（比如用户的网关或者代理服务器地址）。在这种情况下，连接数的计算可能涉及到不止一个终端用户。</p>
<p>422    从当前客户端所在的IP地址到服务器的连接数超过了服务器许可的最大范围。通常，这里的IP地址指的是从服务器上看到的客户端地址（比如用户的网关或者代理服务器地址）。在这种情况下，连接数的计算可能涉及到不止一个终端用户。</p>
<p>422    请求格式正确，但是由于含有语义错误，无法响应。（RFC 4918 WebDAV）423 Locked 　　当前资源被锁定。（RFC 4918 WebDAV）</p>
<p>424    由于之前的某个请求发生的错误，导致当前请求失败，例如 PROPPATCH。（RFC 4918 WebDAV）</p>
<p>425    在WebDav Advanced Collections 草案中定义，但是未出现在《WebDAV 顺序集协议》（RFC 3658）中。</p>
<p>426    客户端应当切换到TLS/1.0。（RFC 2817）</p>
<p>449    由微软扩展，代表请求应当在执行完适当的操作后进行重试。</p>
<p>500    服务器遇到了一个未曾预料的状况，导致了它无法完成对请求的处理。一般来说，这个问题都会在服务器的程序码出错时出现。</p>
<p>501    服务器不支持当前请求所需要的某个功能。当服务器无法识别请求的方法，并且无法支持其对任何资源的请求。</p>
<p>502    作为网关或者代理工作的服务器尝试执行请求时，从上游服务器接收到无效的响应。</p>
<p>503    由于临时的服务器维护或者过载，服务器当前无法处理请求。这个状况是临时的，并且将在一段时间以后恢复。如果能够预计延迟时间，那么响应中可以包含一个 Retry-After 头用以标明这个延迟时间。如果没有给出这个 Retry-After 信息，那么客户端应当以处理500响应的方式处理它。 　　注意：503状态码的存在并不意味着服务器在过载的时候必须使用它。某些服务器只不过是希望拒绝客户端的连接。</p>
<p>504    作为网关或者代理工作的服务器尝试执行请求时，未能及时从上游服务器（URI标识出的服务器，例如HTTP、FTP、LDAP）或者辅助服务器（例如DNS）收到响应。 　　注意：某些代理服务器在DNS查询超时时会返回400或者500错误</p>
<p>505    服务器不支持，或者拒绝支持在请求中使用的 HTTP 版本。这暗示着服务器不能或不愿使用与客户端相同的版本。响应中应当包含一个描述了为何版本不被支持以及服务器支持哪些协议的实体。</p>
<p>506    由《透明内容协商协议》（RFC 2295）扩展，代表服务器存在内部配置错误：被请求的协商变元资源被配置为在透明内容协商中使用自己，因此在一个协商处理中不是一个合适的重点。</p>
<p>507    服务器无法存储完成请求所必须的内容。这个状况被认为是临时的。WebDAV (RFC 4918)</p>
<p>509    服务器达到带宽限制。这不是一个官方的状态码，但是仍被广泛使用。</p>
<p>510    获取资源所需要的策略并没有没满足。（RFC 2774）</p>
</blockquote>

      
    </div>
    
  </div>
  
    
    <div class="copyright">
        <p><span>本文标题:</span><a  href="/2018/05/10/JSP入门/">JSP入门</a></p>
        <p><span>文章作者:</span><a  href="/" title="访问 烟花小神博客 的个人博客">烟花小神博客</a></p>
        <p><span>发布时间:</span>2018年05月10日 - 00时29分</p>
        <p><span>最后更新:</span>2018年05月10日 - 00时50分</p>
        <p>
            <span>原始链接:</span><a class="post-url" href="/2018/05/10/JSP入门/" title="JSP入门">http://www.lan666.top/2018/05/10/JSP入门/</a>
            <span class="copy-path" data-clipboard-text="原文: http://www.lan666.top/2018/05/10/JSP入门/　　作者: 烟花小神博客" title=""></span>
        </p>
        <p>
            <span>许可协议:</span><i class="fa fa-creative-commons"></i> <a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/cn/" title="中国大陆 (CC BY-NC-SA 3.0 CN)" target = "_blank">"署名-非商用-相同方式共享 3.0"</a> 转载请保留原文链接及作者。
        </p>
    </div>



<nav id="article-nav">
  
    <a  href="/2018/05/14/MySQL/" id="article-nav-newer" class="article-nav-link-wrap">
      <strong class="article-nav-caption"><</strong>
      <div class="article-nav-title">
        
          初识MySQL
        
      </div>
    </a>
  
  
    <a  href="/2018/04/10/Java_api_中文分享/" id="article-nav-older" class="article-nav-link-wrap">
      <div class="article-nav-title">Java_api_中文分享</div>
      <strong class="article-nav-caption">></strong>
    </a>
  
</nav>


  
</article>

    <div id="toc" class="toc-article">
    <strong class="toc-title">文章目录</strong>
    <ol class="toc"><li class="toc-item toc-level-2"><a class="toc-link" href="#date-2018-5-10-0-50-21"><span class="toc-number">1.</span> <span class="toc-text">date: 2018/5/10 0:50:21     </span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#首页说下网页错误状态码"><span class="toc-number">2.</span> <span class="toc-text">首页说下网页错误状态码</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Servlet的生命周期"><span class="toc-number">3.</span> <span class="toc-text">Servlet的生命周期</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#一张图走进Servlet"><span class="toc-number">4.</span> <span class="toc-text">一张图走进Servlet</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#空指针问题"><span class="toc-number">5.</span> <span class="toc-text">空指针问题</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Tomcat-端口被占用解决方案"><span class="toc-number">6.</span> <span class="toc-text">Tomcat 端口被占用解决方案</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#404地址错误的踩坑（初学者）"><span class="toc-number">7.</span> <span class="toc-text">404地址错误的踩坑（初学者）</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#request-response-部分基本用法"><span class="toc-number">8.</span> <span class="toc-text">request response 部分基本用法</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#数据库DB-Util-工具类"><span class="toc-number">9.</span> <span class="toc-text">数据库DB_Util 工具类</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#以下来自度娘"><span class="toc-number">10.</span> <span class="toc-text">以下来自度娘</span></a></li></ol>
</div>
<style>
    .left-col .switch-btn {
        display: none;
    }
    .left-col .switch-area {
        display: none;
    }
</style>
<input type="button" id="tocButton" value="隐藏目录"  title="点击按钮隐藏或者显示文章目录">

<script src="https://7.url.cn/edu/jslib/comb/require-2.1.6,jquery-1.9.1.min.js"></script>

<script>
    var valueHide = "隐藏目录";
    var valueShow = "显示目录";
    if ($(".left-col").is(":hidden")) {
        $("#tocButton").attr("value", valueShow);
    }
    $("#tocButton").click(function() {
        if ($("#toc").is(":hidden")) {
            $("#tocButton").attr("value", valueHide);
            $("#toc").slideDown(320);
            $(".switch-btn, .switch-area").fadeOut(300);
        }
        else {
            $("#tocButton").attr("value", valueShow);
            $("#toc").slideUp(350);
            $(".switch-btn, .switch-area").fadeIn(500);
        }
    })
    if ($(".toc").length < 1) {
        $("#toc, #tocButton").hide();
        $(".switch-btn, .switch-area").show();
    }
</script>




<div class="bdsharebuttonbox">
	<a href="#" class="fx fa-weibo bds_tsina" data-cmd="tsina" title="分享到新浪微博"></a>
	<a href="#" class="fx fa-weixin bds_weixin" data-cmd="weixin" title="分享到微信"></a>
	<a href="#" class="fx fa-qq bds_sqq" data-cmd="sqq" title="分享到QQ好友"></a>
	<a href="#" class="fx fa-facebook-official bds_fbook" data-cmd="fbook" title="分享到Facebook"></a>
	<a href="#" class="fx fa-twitter bds_twi" data-cmd="twi" title="分享到Twitter"></a>
	<a href="#" class="fx fa-linkedin bds_linkedin" data-cmd="linkedin" title="分享到linkedin"></a>
	<a href="#" class="fx fa-files-o bds_copy" data-cmd="copy" title="分享到复制网址"></a>
</div>
<script>window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"2","bdSize":"24"},"share":{}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];</script>




    
        <section class="changyan" id="comments">
  <!--<div id="uyan_frame"></div>-->
  <div id="SOHUCS"></div>
  <script charset="utf-8" type="text/javascript" src="https://changyan.sohu.com/upload/changyan.js"></script>
  <script type="text/javascript">
    window.changyan.api.config({
      appid: 'cyvg6eneY',
      conf: 'prod_722c62cfeceb68b1cdeef0634523c760'
    });
  </script>
</section>
    



    <div class="scroll" id="post-nav-button">
        
            <a  href="/2018/05/14/MySQL/" title="上一篇: 初识MySQL">
                <i class="fa fa-angle-left"></i>
            </a>
        
        <a title="文章列表"><i class="fa fa-bars"></i><i class="fa fa-times"></i></a>
        
            <a  href="/2018/04/10/Java_api_中文分享/" title="下一篇: Java_api_中文分享">
                <i class="fa fa-angle-right"></i>
            </a>
        
    </div>
    <ul class="post-list"><li class="post-list-item"><a class="post-list-link" href="/2019/08/18/SSM整合/">SSM整合</a></li><li class="post-list-item"><a class="post-list-link" href="/2019/08/15/MyBatis多对一和一对多/">MyBatis多对一和一对多</a></li><li class="post-list-item"><a class="post-list-link" href="/2019/08/15/MyBatis动态sql/">MyBatis常用的动态sql标签</a></li><li class="post-list-item"><a class="post-list-link" href="/2019/08/09/强大的Lombok配置Eclipse/">强大的Lombok配置Eclipse</a></li><li class="post-list-item"><a class="post-list-link" href="/2019/08/09/SpringMVC入门（二）/">SpringMVC入门（二）</a></li><li class="post-list-item"><a class="post-list-link" href="/2019/08/09/SpringMVC入门/">SpringMVC入门</a></li><li class="post-list-item"><a class="post-list-link" href="/2018/05/14/MySQL/">初识MySQL</a></li><li class="post-list-item"><a class="post-list-link" href="/2018/05/10/JSP入门/">JSP入门</a></li><li class="post-list-item"><a class="post-list-link" href="/2018/04/10/Java_api_中文分享/">Java_api_中文分享</a></li><li class="post-list-item"><a class="post-list-link" href="/2018/04/08/JDBC应用实战/">JDBC应用实战</a></li><li class="post-list-item"><a class="post-list-link" href="/2018/04/08/JDBC基础/">JDBC基础知识</a></li><li class="post-list-item"><a class="post-list-link" href="/2018/04/08/运算符和表达式/">运算符和表达式</a></li><li class="post-list-item"><a class="post-list-link" href="/2018/04/08/继承和多态/">继承和多态</a></li><li class="post-list-item"><a class="post-list-link" href="/2018/04/08/抽象类和接口/">抽象类和接口</a></li><li class="post-list-item"><a class="post-list-link" href="/2018/01/18/最大公约数和和最小公倍数/">最大公约数和和最小公倍数</a></li><li class="post-list-item"><a class="post-list-link" href="/2018/01/18/输入任意数排序/">输入任意数排序</a></li><li class="post-list-item"><a class="post-list-link" href="/2017/12/26/银行登录系统/">银行登录系统</a></li><li class="post-list-item"><a class="post-list-link" href="/2017/11/26/Java逻辑运算题/">Java逻辑运算题</a></li><li class="post-list-item"><a class="post-list-link" href="/2017/11/26/int运算法则/">简单的int运算符</a></li><li class="post-list-item"><a class="post-list-link" href="/2017/11/26/String运算法则/">String类型的运算</a></li><li class="post-list-item"><a class="post-list-link" href="/2017/11/26/数据类型/">Java数据类型</a></li><li class="post-list-item"><a class="post-list-link" href="/2017/11/26/java io/">java IO 文件操作</a></li><li class="post-list-item"><a class="post-list-link" href="/2017/10/30/JAVA随机点名/">JAVA点名</a></li><li class="post-list-item"><a class="post-list-link" href="/2017/09/04/进制转换/">进制转换</a></li><li class="post-list-item"><a class="post-list-link" href="/2017/08/20/TTS/">文字转语音</a></li><li class="post-list-item"><a class="post-list-link" href="/2017/08/20/xiaolan/">崭新</a></li></ul>
    
<script src="https://7.url.cn/edu/jslib/comb/require-2.1.6,jquery-1.9.1.min.js"></script>

    <script>
        $(".post-list").addClass("toc-article");
        // $(".post-list-item a").attr("target","_blank");
        $("#post-nav-button > a:nth-child(2)").click(function() {
            $(".fa-bars, .fa-times").toggle();
            $(".post-list").toggle(300);
            if ($(".toc").length > 0) {
                $("#toc, #tocButton").toggle(200, function() {
                    if ($(".switch-area").is(":visible")) {
                        $("#toc, .switch-btn, .switch-area").toggle();
                        $("#tocButton").attr("value", valueHide);
                        }
                    })
            }
            else {
                $(".switch-btn, .switch-area").fadeToggle(300);
            }
        })
    </script>




    <script>
        
    </script>

</div>
      <footer id="footer">
    <div class="outer">
        <div id="footer-info">
            <div class="footer-left">
                &copy; 2021 烟花小神博客
            </div>
			<div class="footer-center">
                备案号：<a href="https://beian.miit.gov.cn" target="_blank">陕ICP备20001529号-1</a>
            </div>
            <!-- <div class="footer-right">
                <a href="http://lan666.top/" target="_blank">2017至今 在访问本网站时 <br>请自觉遵守中华人民共和国法律 并解释一切解释权归烟花小神所有</a> <br> 备案号：陕ICP备20001529号
            </div> -->
        </div>
        
            <div class="visit">
                
                    <span id="busuanzi_container_site_pv" style='display:none'>
                        <span id="site-visit" >极客到访数: 
                            <span id="busuanzi_value_site_uv"></span>
                        </span>
                    </span>
                
                
                   <!-- <span>, </span> -->
                
                
                    <span id="busuanzi_container_page_pv" style='display:none'>
                        <span id="page-visit">本页阅读量: 
                            <span id="busuanzi_value_page_pv"></span>
                        </span>
                    </span>
                
            </div>
        
    </div>
</footer>

    </div>
    
<script src="https://7.url.cn/edu/jslib/comb/require-2.1.6,jquery-1.9.1.min.js"></script>

<script src="/js/main.js"></script>

    <script>
        $(document).ready(function() {
            var backgroundnum = 1;
            var backgroundimg = "url(/background/bg-x.jpg)".replace(/x/gi, Math.ceil(Math.random() * backgroundnum));
            $("#mobile-nav").css({"background-image": backgroundimg,"background-size": "cover","background-position": "center"});
            $(".left-col").css({"background-image": backgroundimg,"background-size": "cover","background-position": "center"});
        })
    </script>


<!-- Google Analytics -->
<script type="text/javascript">
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');

ga('create', 'xxxxx', 'auto');
ga('send', 'pageview');

</script>
<!-- End Google Analytics -->



	<script>
	var _hmt = _hmt || [];
	(function() {
	  var hm = document.createElement("script");
	  hm.src = "//hm.baidu.com/hm.js?xxxxxx";
	  var s = document.getElementsByTagName("script")[0]; 
	  s.parentNode.insertBefore(hm, s);
	})();
	</script>



<div class="scroll" id="scroll">
    <a href="#"><i class="fa fa-arrow-up"></i></a>
    <a href="#comments"><i class="fa fa-comments-o"></i></a>
    <a href="#footer"><i class="fa fa-arrow-down"></i></a>
</div>
<script>
    $(document).ready(function() {
        if ($("#comments").length < 1) {
            $("#scroll > a:nth-child(2)").hide();
        };
    })
</script>

<script async src="https://dn-lbstatics.qbox.me/busuanzi/2.3/busuanzi.pure.mini.js">
</script>

  <script language="javascript">
    $(function() {
        $("a[title]").each(function() {
            var a = $(this);
            var title = a.attr('title');
            if (title == undefined || title == "") return;
            a.data('title', title).removeAttr('title').hover(
            function() {
                var offset = a.offset();
                $("<div id=\"anchortitlecontainer\"></div>").appendTo($("body")).html(title).css({
                    top: offset.top - a.outerHeight() - 15,
                    left: offset.left + a.outerWidth()/2 + 1
                }).fadeIn(function() {
                    var pop = $(this);
                    setTimeout(function() {
                        pop.remove();
                    }, pop.text().length * 800);
                });
            }, function() {
                $("#anchortitlecontainer").remove();
            });
        });
    });
</script>


  </div>
</body>
</html>